note
	description: "[
					Abstract notion of a {PHONE_VALIDATOR}, which is co-variant
					with {PHONE}
					]"
	date: "$Date: $"
	revision: "$Revision: $"

deferred class
	PHONE_VALIDATOR

feature -- Access

	invalid_message (a_number: attached like {PHONE [PHONE_VALIDATOR, PHONE_FORMATTER]}.number): STRING
			-- A description of what is wrong with `a_number'.
		deferred
		end

feature -- Status Report

	is_valid (a_number: attached like {PHONE [PHONE_VALIDATOR, PHONE_FORMATTER]}.number): BOOLEAN
			-- Is `a_number' valid?
		deferred
		end

	is_ficticious (a_number: attached like {PHONE [PHONE_VALIDATOR, PHONE_FORMATTER]}.number): BOOLEAN
			-- Is `a_number' "555" exchange or central office?
			-- The use of numbers starting in 555- (KLondike-5) to represent fictional
			-- numbers in U.S. movies, television, and literature originated in this period.
			-- The "555" prefix was reserved for telephone company use and was only consistently
			-- used for Directory Assistance (Information), being "555-1212" for the local area.
			-- An attempt to dial a 555 number from a movie in the real world will always result
			-- in an error message when dialed from a phone in the United States. This reduces
			-- the likelihood of nuisance calls.
			--| Source: WikiPedia: http://en.wikipedia.org/wiki/Telephone_number
		deferred
		end

	is_directory_assistance (a_number: attached like {PHONE [PHONE_VALIDATOR, PHONE_FORMATTER]}.number): BOOLEAN
			-- Is `a_number' "5551212"
		deferred
		end

	is_information (a_number: attached like {PHONE [PHONE_VALIDATOR, PHONE_FORMATTER]}.number): BOOLEAN
			-- Is `a_number' "411" information?
		deferred
		end

	is_emergency (a_number: attached like {PHONE [PHONE_VALIDATOR, PHONE_FORMATTER]}.number): BOOLEAN
			-- Is `a_number' "911" emergency?
		deferred
		end

	is_system_services	(a_number: attached like {PHONE [PHONE_VALIDATOR, PHONE_FORMATTER]}.number): BOOLEAN
			-- Is `a_number' "611" system services?
		deferred
		end


note
	copyright: "Copyright (c) 2012-2012, Greater Atlanta User Group for Eiffel (GAUGE)"
	license: "GPL version 2 (see http://www.eiffel.com/licensing/gpl.txt)"
	licensing_options: "http://www.eiffel.com/licensing"
	copying: "[
			This file is part of the Greater Atlanta User Group for Eiffel (GAUGE), Eiffel Development Environment.
			
			GAUGE's Eiffel Development Environment is free
			software; you can redistribute it and/or modify it under
			the terms of the GNU General Public License as published
			by the Free Software Foundation, version 2 of the License
			(available at the URL listed under "license" above).
			
			GAUGE's Eiffel Development Environment is
			distributed in the hope that it will be useful, but
			WITHOUT ANY WARRANTY; without even the implied warranty
			of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
			See the GNU General Public License for more details.
			
			You should have received a copy of the GNU General Public
			License along with Eiffel Software's Eiffel Development
			Environment; if not, write to the Free Software Foundation,
			Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
		]"
	source: "[
			GAUGE
			Atlanta, GA
			Website http://www.atlantausergroups.com/group/gauge
		]"
end
